He estado buscando en Google esto, pero aunque veo personas usándolos, no veo ninguna explicación para ello. También probé búsquedas de "buscar y sed", pero nuevamente no hay explicación sobre esto. El sed man y otras guías sed tampoco lo incluyen.
Ahora, estoy usando el comando de búsqueda para encontrar varios archivos y luego uso sed para reemplazar las cadenas dentro de los archivos. Creo que estos "{}" y "\;" al final de sed están los que le permiten a sed tomar cada nombre de archivo de find y buscar a través de su texto. Pero prefiero no adivinar y saber con certeza qué son y por qué están ahí. Aquí está mi comando actual:
output=$(find . -type f -name '*.h' -o -name '*.C' -o -name '*.cpp' -o -name "*.cc" -exec sed -n -i "s/ARG2/ARG3/g" {} \;)También me preocupa que el ";" al final puede que no sea necesario ya que también lo envuelvo y lo arrojo a una variable. ¿Alguien podría aclarar qué están haciendo esos curlies y backslash y si los necesito?
EDITAR : Resulta que son propiedades de find -exec, no sed. Así que he estado buscando en el lugar equivocado. ¡Gracias!
find tiene dos versiones de la acción -exec :
-exec ... {} + ...ejecuta el comando ... , con tantos nombres de archivos de los resultados como sea posible agregados al final.
-exec ... {} ';' ...ejecuta el comando ... una vez por archivo encontrado, con el nombre de archivo sustituido en lugar del sigilo {} ; no es obligatorio que el sigilo esté al final de la línea en este uso.
Por lo tanto, ya sea un + o ; debe pasarse como un argumento find para que acepte la acción como válida.